package com.aviator.executor;

/**
 * @Author: Jiangxx
 * @Date: 2021/12/30
 * @Description: 语法手册
 */
public class AviatorExecutor12 {
    /**
     * 数据类型：● Number类型: 数字类型,支持四种类型,分别是long,double,java.math.BigInteger(简称 big int)和java.math.BigDecimal(简 称 decimal),规则如下:
     *   ○ 任何以大写字母 N 结尾的整数都被认为是 big int
     *   ○ 任何以大写字母 M 结尾的数字都被认为是 decimal
     *   ○ 其他的任何整数都将被转换为 Long
     *   ○ 其他任何浮点数都将被转换为 Double
     *   ○ 超过 long 范围的整数字面量都将自动转换为 big int 类型
     *
     * 其中 big int 和 decimal 是 2.3.0 版本开始引入的。数字还支持十六进制(以0x或者0X开头的数字), 以及科学计数法,如1e-3等。 不支持其他进制。
     *
     * ● String类型: 字符串类型,单引号或者双引号括起来的文本串,如'hello world', 变量如果传入的是String或者Character也将转为String类型
     * ● Bool类型: 常量true和false,表示真值和假值,与 java 的Boolean.TRUE和Boolean.False对应
     * ● Pattern类型: 正则表达式, 以//括起来的字符串,如/\d+/,内部 实现为java.util.Pattern
     * ● 变量类型: 与 Java 的变量命名规则相同,变量的值由用户传入
     * ● nil类型: 常量nil,类似 java 中的null,但是nil比较特殊,nil不仅可以参与==、!=的比较, 也可以参与>、>=、<、<=的比较,Aviator 规定任何类型都大于nil除了nil本身,nil==nil返回true。 用户传入的变量值如果为null,那么也将作为nil处理,nil打印为null
     */

    /**
     * 操作符：算术运算符
     *
     * Aviator 支持常见的算术运算符,包括+ - * / %五个二元运算符,和一元运算符-(负)。其中- * / %和一元的-仅能作用于Number类型。
     * +不仅能用于Number类型,还可以用于String的相加,或者字符串与其他对象的相加。
     * Aviator 规定,任何类型与String相加,结果为String。
     *
     * 逻辑运算符
     *
     * Avaitor 的支持的逻辑运算符包括,一元否定运算符!,以及逻辑与的&&,逻辑或的||。逻辑运算符的操作数只能为Boolean。
     * &&和||都执行短路规则。
     *
     * 关系运算符
     *
     * Aviator 支持的关系运算符包括<, <=, >, >=以及==和!= 。
     * 关系运算符可以作用于Number之间、String之间、Pattern之间、Boolean之间、变量之间以及其他类型与nil之间的关系比较, 不同类型除了nil之外不能相互比较。
     *
     * 位运算符
     *
     * Aviator 支持所有的 Java 位运算符,包括&, |, ^, ~, >>, <<, >>>。
     *
     * 匹配运算符
     *
     * 匹配运算符=~用于String和Pattern的匹配,它的左操作数必须为String,右操作数必须为Pattern。 匹配成功后,Pattern的分组将存于变量$num,num为分组索引。
     *
     * 三元运算符
     *
     * Aviator 没有提供if else语句,但是提供了三元运算符?:,形式为bool ? exp1: exp2。 其中bool必须为Boolean类型的表达式, 而exp1和exp2可以为任何合法的 Aviator 表达式,并且不要求exp1和exp2返回的结果类型一致。
     */
}
